Data storage devices/servers that are capable of storing messages are known. However, most of these devices are not optimized for storing messages. A message store contains user preferences, message directories, and a list of individual messages that may vary in size and content. Traditional message stores tend to use multiple files to keep track of, these different types of information. They all use one file to keep track of the user preferences, another to hold the message directory information, and a set of individual files that store each user message. In such a system, a single user having 20 messages will require a total of 22 files, 20 for the individual messages, one to keep track of the message directory, and yet another to keep track of the user preferences.
If the message store described above has to keep track of quarter million users, each of them having 10 messages, then such a system will end up having 2.5 million files to hold the messages, 250,000 to hold the user message directory, and an additional 250,000 holding user preferences. Thus, the total number of files required will be 3 million files. Clearly, most operating systems cannot keep track of such a huge number of files. Hence, such a message store architecture will work well for small scale systems but will fail for systems that have to handle very large number of subscribers. Further, it is very difficult to keep track of three million or more files.
Most of the existing message stores do not accommodate telecommunication applications as well as web applications on the same message store because most of the telecommunication applications are real-time, streaming based applications while the web applications may be streaming or non-streaming because they are less susceptible for time delays.
From the above it is evident that a improved message store is required to handle messages that may be accessed both from the web as well as the telecommunication networks. Further, such a system must be capable of handling a huge subscriber base.
According to one aspect of the invention, an improved message store server, tuned for both telecommunication networks as well as the Internet/World Wide Web (WWW), supports a huge number of subscribers. In one embodiment, a single message access server (MAS) is able to store a quarter million user records containing user preferences and message directory information along with message pools holding the messages. According to another aspect of the invention, the message access server has its own caching algorithm enabling fast access to user information.
According to further aspect of the invention, if the total number of channels, i.e. simultaneous telephony subscribers, becomes too great for one message access server to handle, the system is easily scaled by adding additional message access servers. Every user has a home message store called the home message access server that maintains the user""s message directory, messages, and preferences. The Gateway Access Server (GAS) answers the incoming call, identifies the subscriber to whom the call is destined to based on the caller ID and/or extension, and then contacts the home message access server holding the subscriber information.
According to another aspect of the invention, the unified message store is scalable because additional message file pools may be added to a single MAS and additional MASs may also added. In one embodiment, each subscriber has a home MAS and a user database maintains a correspondence between subscriber number and home MAS so that multiple MASs may be used. Further, each entry in the user""s message record includes pool and record pointers to facilitate storage in different pools.
According to another aspect of the invention, messages may be forwarded and shared without creating additional copies of the message. Pointers to the same message are created for different users and a reference count is maintained for the message indicating the number of references to the message.
According to another aspect of the invention, a message forwarding module manages transfers of messages between MASs. In one embodiment, a store and forward queue is maintained so that the forwarding does not require availability of the MAS to which the message is being forwarded.
According to another aspect of the invention, class of service information is maintained in one record. A field in each user profile indicates the class of service to which the user belongs.